package com.cacho.s2b.lesson.grammar.func;

import com.cacho.s2b.lesson.util.TimeUtils;
import com.cacho.s2b.lesson.vo.ApiTestInfo;
import org.apache.commons.lang3.math.NumberUtils;

import java.text.ParseException;
import java.util.Date;
import java.util.TimeZone;

/**
 * @Description 对时间格式参数处理 ["yyyy-MM-dd'T'HH:mm:ss'+03:00'","GMT+3",-365]
 * @Author LingWei
 * @date 2024/06/28
 **/

public class GrammarFuncPastAndFutureDates implements GrammarFunc {
    @Override
    public String getString(ApiTestInfo testInfo, String[] parts, int len) throws ParseException {
        String rtn = "";
        String format = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";  //设置默认时间格式
        int numOfDayToBeAdded = 0;
        // 如果有parts参数并且第一个不为空，把第1个参数当成时间给谁
        if (parts.length > 0 && !parts[0].trim().isEmpty()) {
            format = parts[0];
        }
        String timeZone = TimeZone.getDefault().getID(); // 用当地时区
        // 如果参数大于1，判断第1个参数是 时区 还是时间间隔
        if (parts.length > 1) {
            // 判断第2个能否转换为数字，如果是设置 numOfDayToBeAdded=第2个参数，否则第2个参数为时区
            if(NumberUtils.isCreatable(parts[1])){numOfDayToBeAdded=Integer.parseInt(parts[1]);}else{
                timeZone = parts[1];}
        }
        // 如果参数大于2，第2个参数为时区，第3个为间隔时间
        if (parts.length > 2) {
            numOfDayToBeAdded=Integer.parseInt(parts[2]);
            timeZone = parts[1];
        }
        rtn = TimeUtils.addDateTimeStr(new Date(), format, timeZone, numOfDayToBeAdded);
        return rtn;
    }
}
